home *** CD-ROM | disk | FTP | other *** search
- MODULE FixAccess;
-
- IMPORT ums, umss:UmsSupport, Patterns,
- MHArgs, Err, NoGuruErr, Dos, Utility, sys:SYSTEM;
-
-
- TYPE
- Lister* = RECORD (umss.Scanner)
- pat: Patterns.Pattern;
- END;
-
- VAR
- session : umss.Session;
- cfg : MHArgs.Config;
- name,pwd,server,user: ARRAY 80 OF CHAR;
- setflags,unsetflags: LONGSET;
-
- lister : Lister;
- viewFlag : INTEGER;
- dummy : LONGINT;
- text : ums.STRPTR;
-
- PROCEDURE (VAR me:Lister) DoField*( str: ums.STRPTR; flag: INTEGER);
- VAR count: LONGINT;
- BEGIN
- IF (str^ # "") & me.pat.Match(str^) THEN
- count := ums.UMSSelectTags( me.session.login,
- ums.tagSelReadLocal, 1,
- ums.tagSelMask, LONGSET{flag},
- ums.tagSelMatch, LONGSET{flag},
- ums.tagSelWriteUser, sys.ADR(user),
- ums.tagSelSet, setflags,
- ums.tagSelUnset, unsetflags,
- Utility.done);
- Dos.PrintF("%4ld - \"%s\"\n", count, str);
- ELSE
- Dos.PrintF("noac - \"%s\"\n", str);
- END;
- END DoField;
-
-
- BEGIN
- cfg := MHArgs.OpenConfig( "SYSOPNAME/A,PASSWORD/A,SERVER/K,USER/A,UNREAD/S",
- "FixAccess - © 26.8.1993 by Martin Horneffer\n\n"
- "Remake a users public access-rights.", NIL);
-
- IF cfg=NIL THEN HALT(20) END;
-
- IF cfg.GetString( "SYSOPNAME", name) &
- cfg.GetString( "PASSWORD", pwd) &
- cfg.GetString( "USER", user) THEN
-
- IF ~cfg.GetString( "SERVER", server) THEN server := "" END;
- IF cfg.GetBoolean("UNREAD") THEN
- setflags := LONGSET{ums.ReadAccess,ums.ViewAccess};
- unsetflags := LONGSET{ums.Old};
- ELSE
- setflags := LONGSET{ums.ReadAccess,ums.ViewAccess,ums.Old};
- unsetflags := LONGSET{};
- END;
-
- session := umss.CreateSession( server, name, pwd);
-
- text := ums.ReadUMSConfigTags( session.login,
- ums.tagCfgUser, sys.ADR(user),
- ums.tagCfgName, sys.ADR("READACCESS"),
- Utility.done);
- Err.Assert( text#NIL, "Cannot read READACCESS!");
- lister.pat := Patterns.CreatePattern( text^, FALSE, NIL);
- Err.Assert( lister.pat#NIL, "Cannot compile pattern!");
-
- viewFlag := session.AllocFlag(TRUE);
-
- dummy := ums.UMSSelectTags( session.login,
- ums.tagSelMask, LONGSET{ums.ViewAccess},
- ums.tagSelMatch, LONGSET{ums.ViewAccess},
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{viewFlag},
- Utility.done);
-
- lister.Do( session, ums.group, LONGSET{viewFlag}, LONGSET{viewFlag});
-
- session.DeAllocFlag(viewFlag);
- END;
- END FixAccess.
-